OSI 7계층은 통신용 규약이 표준화되지 않아 호환되지 않는 시스템이나 애플리케이션 간의 통신 불가능을 해결하고자 하나의 규약으로 통합하려는 노력으로 만들어졌습니다.
OSI 7계층은 네트워크 동작을 나누어 이해하고 개발하는 데 많은 도움이 되어 네트워크의 주요 레퍼런스 모델로 활용되고 있으나 현재는 대부분의 프로토콜이 TCP/IP 프로토콜 스택 기반으로 되어있습니다.
PDU: Protocol Data Unit
위의 OSI 계층을 다시 두 계층으로 나눌 수 있습니다.
이 두 계층의 구분은 데이터를 만드는 애플리케이션 부분과 이 데이터를 잘 전달하는 데 집중하는 하부 계층으로 구분하는 것이 목적입니다.
이러한 구분에 의해 자연스럽게 애플리케이션 개발자가 고려해야 할 부분과 서버 엔지니어나 네트워크 엔지니어가 고려해야 할 부분이 구분되었습니다.
애플리케이션 개발자는 애플리케이션 계층 프로토콜을 개발할 때 하위 계층은 고려하지 않고 데이터를 표현하는 데 초점을 맞춥니다.
반대로 네트워크 엔지니어는 애플리케이션 계층에 대해 일반적으로 심각하게 고려하지 않습니다.
이런 이유로 애플리케이션 개발자는 하향식(Top-Down) 형식으로 네트워크를 바라보고 네트워크 엔지니어는 상향식(Botton-Up) 형식으로 네트워크를 인식합니다.
현대 네트워크는 대부분 TCP/IP와 이더넷으로 이루어져 있습니다.
TCP/IP와 이더넷이 개발된 것은 매우 오래전입니다. 몇번의 큰 기술 발전을 거쳐 현재는 값싸고 성능이 우수한 TCP/IP와 이더넷이 되었습니다.
TCP/IP는 이론보다 실용성에 중점을 둔 프로토콜입니다.
위에서 언급했듯 OSI 계층을 상부, 하부 계층으로 나누며 애플리케이션 개발자가 고려해야 할 부분과 서버 엔지니어나 네트워크 엔지니어가 고려해야 할 부분이 구분되었습니다.
TCP/IP 모델은 그 구분이 더 확연히 드러납니다.
상위 3개 계층을 하나의 애플리케이션 계층으로 묶고, 물리 계층과 데이터 링크 계층을 하나의 네트워크 계층으로 구분합니다.
현실에 쉽게 반영하도록 간단히 구분하는 TCP/IP 프로토콜 스택의 성향이 이곳에서도 드러납니다.
OSI 7계층은 참조형 모델이고 실제로 사용하는 프로토콜은 TCP/IP 프로토콜 스택으로 구현되어 있지만 계층별로 자세히 다루기 위해 OSI 7계층 기준으로 나누었습니다.
물리적 연결과 관련된 정보를 정의합니다.
1계층에서는 들어온 전기 신호를 그대로 잘 전달하는 것이 목적이므로 전기 신호가 1계층 장비에 들어오면 이 전기 신호를 재생성하여 내보냅니다.
1계층 장비는 주소의 개념이 없으므로 전기 신호가 들어온 포트를 제외하고 모든 포트에 같은 전기 신호를 전송합니다.
전기 신호를 모아 우리가 알아볼 수 있는 데이터 형태로 처리합니다.
신뢰할 수 있는 현대의 물리 계층과 달리 과거에는 신뢰할 수 없는 미디어를 이용해 통신하는 경우도 많아 2계층에서 에러를 탐지하고 고치거나 재전송했습니다.
주소 체계가 생긴다는 것은 여러 명과 동시에 통신할 수 있다는 것이므로 무작정 데이터를 던지는 것이 아니라 받는 사람이 현재 데이터를 받을 수 있는지 확인하는 작업부터 해야 합니다.
이 역할을 플로 컨트롤이라 합니다.
간단하게 표현한 2계층의 플로 컨트롤
네트워크 인터페이스 카드에는 고유 MAC 주소가 있습니다. 입력된 전기 신호를 데이터로 만든 후 MAC 주소를 확인해 자신에게 들어온 전기 신호가 맞는지 확인 후 아닌 경우 폐기하고 맞을 경우 상위에서 처리할 수 있도록 메모리에 적재합니다.
스위치는 단말(Terminal)이 어떤 MAC 주소인지, 연결된 포트는 어느 것인지 주소 습득 과정에서 알 수 있습니다.
이 데이터를 기반으로 단말들이 통신할 때 포트를 적절히 필터링하고 정확한 포트로 포워딩 해줍니다.
이를 통해 네트워크 전체의 불필요한 처리가 감소하면서 이더넷 네트워크 효율성이 크게 향상되었고 이더넷 기반 네트워크가 급증하는 계기가 되었습니다.
반면 허브는 전체 포트로 전기 신호를 전달하다 보니 전체 네트워크에서 동시에 오직 하나의 장비만 데이터를 보낼 수 있습니다.
IP 주소와 같은 논리적인 주소가 정의됩니다.
데이터 통신을 할 때 사용되는 두 가지 주소
IP 주소는 사용자가 환경에 맞게 변경해 사용할 수 있고 네트워크 주소 부분과 호스트 주소 부분으로 나뉩니다.
3계층을 이해할 수 있는 장비나 단말은 네트퉈크 주소 정보를 이용해 자신이 속한 네트워크와 원격지를 구분할 수 있고, 원격지 네트워크를 가려면 어디로 가야 하는지 경로를 지정하는 능력이 있습니다.
라우터는 3계층에서 동작하는 장비로 IP 주소를 이해할 수 있습니다.
라우터는 IP 주소를 이용해 최적의 경로를 찾아주고 해당 경로로 패킷을 전송하는 역할을 합니다.
여기까지가 하위 계층입니다.
1, 2, 3계층은 신호와 데이터를 올바른 위치로 보내고 실제 신호를 잘 만들어 보내는데 집중합니다.
4계층은 실제로 해당 데이터들이 정상적으로 잘 보내지도록 확인하는 역할을 합니다.
패킷 네트워크는 데이터를 분할해 패킷에 실어보내다 보니 중간에 패킷 유실이나 순서가 바뀌는 경우가 생길 수 있습니다. 이를 바로잡아 주는 역할을 4계층에서 담당합니다.
4계층에서 패킷을 분할할 때 패킷 헤더에 보내는 순서와 받는 순서를 적어 통신하므로 패킷이 유실되면 재정송을 요청할 수 있고 순서가 뒤바뀌더라도 바로 잡을 수 있습니다.
4계층에서 동작하는 장비
이 장비들은 애플리케이션 구분자(포트 번호)와 시퀀스, ACK 번호 정보를 이용해 부하를 분산하거나 보안 정책을 수립해 패킷을 통과, 차단하는 기능을 수행합니다.
양 끝단의 응용 프로세스가 연결을 성립하도록 도와주고 연결이 안정적으로 유지되도록 관리하고 작업 완료 후에는 이 연결을 끊는 역할을 합니다.
세션: 클라이언트와 웹 서버 간 네트워크 연결이 지속되고 유지되고 있는 상태
표현 방식이 다른 애플리케이션이나 시스템 간의 통신을 돕기 위해 하나의 통일된 구문 형식으로 변환시키는 기능을 수행합니다.
이러한 기능은 사용자 시스템의 응용 계층에서 데이터의 형식상 차이를 다루는 부담을 덜어줍니다.
MIME(Multipurpose Internet Mail Extensions): SMTP 프로토콜이 7비트 ASCII문자만을 지원해 영어 이외의 언어로 쓰인 전자 우편을 제대로 전송할 수 없다. ASCII가 아닌 문자 인코딩을 이용해 영어가 아닌 다른 언어로 된 전자 우편을 보낼 수 있는 방식을 정의한 것이 MIME이다.
애플리케이션 프로세스를 정의하고 애플리케이션 서비스를 수행합니다.
네트워크 소프트웨어의 UI 부분이나 사용자 입.출력 부분을 정의하는 것이 애플리케이션 계층의 역할입니다.
애플리케이션 계층의 대표적인 프로토콜로는 FTP, SMTP, HTTP, TELNET이 있습니다.
계층 | 주요 프로토콜 | 장비 |
애플리케이션 계층 | HTTP, SMP, SMTP, STUN, TFTP, TELNET | ADC, NGFW, WAF |
프레젠테이션 계층 | TLS, AFP, SSH | |
세션 계층 | L2TP, PPTP, NFS, RPC, RTCP, SIP, SSH | |
트랜스포트 계층 | TCP, UDP, SCTP, DCCP, AH, AEP | 로드 밸런서, 방화벽 |
네트워크 계층 | ARP, IPv4, IPv6, NAT, IPsec, VRRP, 라우팅 프로토콜 | 라우터, L3 스위치 |
데이터 링크 계층 | IEEE 802.2, FDDI | 스위치, 브릿지, 네트워크 카드 |
피지컬 계층 | RS-232, RS-449, V.35, S 등의 케이블 | 케이블, 허브, 탭 |
[IT 엔지니어를 위한 네트워크 입문] 도서를 참조해 공부한 내용입니다.
감사합니다.
Photographs by Chaelin, Unsplash.